
import { OmitDto, Rule, RuleType } from "@midwayjs/validate";

export class BaseGroupDto {
	@Rule(RuleType.number().required().min(0))
	groupId: number;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	majorIds?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	teacherIds?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	groupName?: string;

	@Rule(RuleType.number().optional().allow(null).allow('').min(0))
	teamMax?: number;

	@Rule(RuleType.number().optional().allow(null).allow('').min(0))
	teacherMax?: number;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	startTime?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	endTime?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	createTime?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	updateBy?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	updateTime?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	remark?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	status?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	delFlag?: string;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	createBy?: string;

	@Rule(RuleType.number().min(0))
	deptId: number;

	@Rule(RuleType.number().min(0))
	gradeId: number;

}
export class CreateGroupDto extends OmitDto(BaseGroupDto, ['groupId']) { }
export class UpdateGroupDto extends BaseGroupDto { }
export class QueryGroupDto extends CreateGroupDto {
	@Rule(RuleType.number().optional().min(0))
	pageNum?: number;

	@Rule(RuleType.number().optional().min(0))
	pageSize?: number;
}
export class ListGroupDto extends BaseGroupDto { }
export class QueryGroupStudentDto {

	@Rule(RuleType.boolean().optional())
	isTeam?: boolean;

	@Rule(RuleType.number().optional().min(0))
	pageNum?: number;

	@Rule(RuleType.number().optional().min(0))
	pageSize?: number;

	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	stuId?: string;
	@Rule(RuleType.string().optional().allow(null).allow('').max(500))
	nickName?: string;
}